home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / ant / antdesig / filter.bas < prev    next >
BASIC Source File  |  1986-08-02  |  9KB  |  291 lines

  1. 10 CLS
  2. 20 REM*******************************
  3. 30 PRINT
  4. 40 REM DESIGNS INTERDIGITAL FILTERS
  5. 50 REM HAM RADIO JANUARY 1985
  6. 60 REM*******************************
  7. 70 PRINT
  8. 80 DEF FNRJ(TA,B,C,D)=(B*C-TA*D)/(C*C+D*D)
  9. 90 REM G VALUES BASED ON RIPPLE BW . Q/COUP ON 3-BD
  10. 100 REM USING EQUAL DIAMETER RODS
  11. 110 DIM G(200) , C(200) , RK(200) , AK(200) , FR(40) , ALOSS(40)
  12. 120 DIM A(200) , B(200)
  13. 130 PI=3.14159265#
  14. 140 PRINT 
  15. 150 PRINT
  16. 160 PRINT"DIMENSIONS IN INCHES"
  17. 170 PRINT
  18. 180 INPUT"# OF ELEMENTS & P-P RIPPLE IN PASSBAND (DB)";N,RIP
  19. 190 REM
  20. 200 INPUT"INPUT FILTER CENTER FREQ. (GHZ) ,BW (MHZ) & LOAD IMPEDANCE Zo. ";FZGC,BWMC,R
  21. 210 REM
  22. 220 PRINT "INPUT GROUND PLANE SPACING , ROD DIAMETER"
  23. 230 INPUT "&DISTANCE TO CENTER OF FIRST AND LAST ROD ";H,D,E
  24. 240 REM
  25. 250 INPUT"No. OF FREQ. REJECTION PTS AND STEP SIZE (MHZ)";NFR,STP
  26. 260 PRINT
  27. 270 PRINT" CALCULATION PROCEEDING  PLEASE WAIT"
  28. 280 PRINT
  29. 290 FOR IP=-NFR/2 TO NFR/2
  30. 300 COUNTER=COUNTER+1
  31. 310 FR(COUNTER)=FZGC+(STP*.001*IP)
  32. 320 NEXT IP
  33. 330 IDAT=1
  34. 340 GOTO 350
  35. 350 F1=FZGC-.0005*BWMC
  36. 360 F2=FZGC+.0005*BWMC
  37. 370  IF RIP>0 THEN GOTO 430
  38. 380 BW3GC=F2-F1
  39. 390 BWRGC=0
  40. 400 BW3=1
  41. 410 GOSUB 2070
  42. 420 GOTO 490
  43. 430 B=1/SQR(10^(.1*RIP)-1)
  44. 440 CA=LOG(B+SQR(B*B-1))/(N)
  45. 450 BW3=(EXP(CA)+EXP(-CA))/2
  46. 460 GOSUB 1860
  47. 470 BWRGC=F2-F1
  48. 480 BW3GC=BWRGC*BW3
  49. 490 REM
  50. 500 W=2*(F2-F1)/(F2+F1)
  51. 510 QF=FZGC/BW3GC
  52. 520 NFM=N-1
  53. 530 QWVL=11.8028/(4*FZGC)
  54. 540 FOR K=1 TO NFM
  55. 550 AK(K)=1/(BW3*SQR(G(K)*G(K+1)))
  56. 560 RK(K)=AK(K)/QF
  57. 570 NEXT K
  58. 580 AKO=G(1)*BW3
  59. 590 AK(N)=AKO
  60. 600 AK(N+1)=0
  61. 610  QS=G(1)*BW3*QF
  62. 620 CANH=(EXP(2*PI*E/H)-1)/(EXP(2*PI*E/H)+1)
  63. 630 ZM=59.9585*LOG(4*H/(PI*D))
  64. 640 ZE=59.9585*LOG(CANH*H*4/(PI*D))
  65. 650 RKM=RK(1)*SQR(ZM/ZE)
  66. 660 Z=PI*D/(2*H)
  67. 670 COTH=(EXP(Z)+1)/(EXP(Z)-1)
  68. 680 Y=PI*RKM/4
  69. 690 T=COTH^Y
  70. 700 C(1)=(H/PI)*LOG((T+1)/(T-1))
  71. 710 MFL=N-2
  72. 720 REM IF N-3<0 THEN AG=1 ELSE IF N-1=0 THEN AG=2 ELSE AG=3
  73. 730 ON (2+SGN(N)*1) GOTO 790 , 790 , 740
  74. 740 FOR K=2 TO MFL
  75. 750     Y=PI*RK(K)/4
  76. 760     T=COTH^Y
  77. 770     C(K)=(H/PI)*LOG((T+1)/(T-1))
  78. 780 NEXT K 
  79. 790 C(N-1)=C(1)
  80. 800 X=SQR(PI*R/(4*ZE*QS))
  81. 810 AQ=2*QWVL*ATN(X/SQR(1-X*X))/PI
  82. 820 QU=2200*H*SQR(FZGC)
  83. 830 SUMG=0
  84. 840 FOR J1=1 TO N
  85. 850     SUMG=SUMG+G(J1)
  86. 860     NEXT J1
  87. 870 BLOSS=4.34*FZGC*SUMG/(QU*(F2-F1))
  88. 880 DELAY=SUMG/(2*PI*(F2-F1))
  89. 890 IF RIP > 0 THEN GOTO 920
  90. 900 PRINT"DESIGN DATA FOR ";N;" POLE INTERDIGITAL FILTER. BUTTERWORTH RESPONSE"
  91. 910 GOTO 930
  92. 920 PRINT "DESIGN DATA FOR ";N;" POLE INTERDIGITAL FILTER . BAND PASS RIPPLE  ";RIP;" DB"
  93. 930 PRINT"CENTER FREQ. ";FZGC ;" GHZ"
  94. 940 PRINT"CUTOFF FREQ. ";F1;" GHZ  AND ";F2;" GHZ"
  95. 950 PRINT" RIPPLE BW.  ";BWRGC;" GHZ"
  96. 960 PRINT"  3 DB BW.   ";BW3GC;" GHZ"
  97. 970 PRINT"FRACTIONAL BW ";W
  98. 980 PRINT" FILTER  Q   ";QF
  99. 990 PRINT"  EST  QU    ";QU
  100. 1000 PRINT"LOSS BASED ON QU ";BLOSS;" DB"
  101. 1010 PRINT"DELAY AT BAND CENTER ";DELAY;" NANOSECONDS"
  102. 1020 FOR JK=1 TO NFR
  103. 1030    IF JK=1 THEN PRINT "FREQUENCY REJECTION INFORMATION "
  104. 1040    NFN=ABS(2*(FR(JK)-FZGC)/(W*FZGC))
  105. 1050    IF RIP >0 THEN GOTO 1080
  106. 1060    ALOSS(JK)=10*LOG(1+NFN^(2*N))/LOG(10)
  107. 1070    GOTO 1120
  108. 1080    IF NFN<1 THEN NFN=1
  109. 1090    ANG=N*LOG(NFN+SQR(NFN*NFN-1))
  110. 1100    YAK=.5*(EXP(ANG)+EXP(-ANG))
  111. 1110    ALOSS(JK)=10*LOG(1+(10^(.1*RIP)-1)*YAK*YAK)/LOG(10)
  112. 1120    IF ALOSS(JK)>65 THEN ALOSS=65 ELSE ALOSS = ALOSS(JK)
  113. 1130    FR=INT(FR(JK)*10000)/10000 :ALOS=INT(ALOSS(JK))
  114. 1140    PRINT TAB( INT(ALOSS))"*";TAB(66)FR;TAB(73)ALOS
  115. 1150 NEXT JK
  116. 1160 WO=2*PI*FZGC*1E+09
  117. 1170 F=D/H
  118. 1180 CF=(-.0000422+.0857397*F+.0067853*F*F-.0909217*F^3+.169088*F^4)*PI*H*2.54
  119. 1190 REM
  120. 1200 WW=WO*1E-12
  121. 1210 B2=PI*AQ/(2*QWVL)
  122. 1220 GG=1/R
  123. 1230 BB=-COS(B2)/(ZE*SIN(B2))
  124. 1240 EL1=.8*QWVL
  125. 1250 ANG=EL1*PI/(2*QWVL)
  126. 1260 B1=ANG-B2
  127. 1270 YL= - COS(ANG)/(ZM*SIN(ANG))
  128. 1280 CP=WW*(CF+.17655*D*D/(QWVL-EL1))
  129. 1290 Y1=CP+YL
  130. 1300 EL2=.87*QWVL
  131. 1310 ANG=EL2*PI/(2*QWVL)
  132. 1320 B4=ANG-B2
  133. 1330 YL=-COS(ANG)/(ZM*SIN(ANG))
  134. 1340 CD=WW*(CF+.17655*D*D/(QWVL-EL2))
  135. 1350 Y2=CD+YL
  136. 1360 EL3=.95*QWVL
  137. 1370 ANG=EL3*PI/(2*QWVL)
  138. 1380 B5=ANG-B2
  139. 1390 YL=-COS(ANG)/(ZM*SIN(ANG))
  140. 1400 CQ=WW*(CF+.17655*D*D/(QWVL-EL3))
  141. 1410 Y3=CQ+YL
  142. 1420 ELEM=Y3*Y2*EL1/((Y1-Y2)*(Y1-Y3))+Y1*Y3*EL2/((Y2-Y1)*(Y2-Y3))+Y1*Y2*EL3/((Y3-Y1)*(Y3-Y2))
  143. 1430 TANN=SIN(B1)/COS(B1)
  144. 1440 YL=FNRJ(GG,BB+TANN/ZE,1-ZE*BB*TANN,ZE*GG*TANN)
  145. 1450 Y1=CP+YL
  146. 1460 TANN=SIN(B4)/COS(B4)
  147. 1470 YL=FNRJ(GG,BB+TANN/ZE,1-ZE*BB*TANN,ZE*GG*TANN)
  148. 1480 Y2=CD+YL
  149. 1490 TANN=SIN(B5)/COS(B5)
  150. 1500 IF ALOSS(JK) > 65 THEN ALOSS = 65 ELSE ALOSS = ALOSS(JK)
  151. 1510 FR = INT(FR(JK)*10000)/10000:ALOS = INT(ALOSS(JK))
  152. 1520 YL=FNRJ(GG,BB+TANN/ZE,1-ZE*BB*TANN,ZE*GG*TANN)
  153. 1530 Y3=CQ+YL
  154. 1540 ELEQ=Y3*Y2*EL1/((Y1-Y2)*(Y1-Y3))+Y1*Y3*EL2/((Y2-Y1)*(Y2-Y3))+Y1*Y2*EL3/((Y3-Y1)*(Y3-Y2))
  155. 1550 REM
  156. 1560 PRINT"QUATER WAVELENGTH =";QWVL ;" INCHES"
  157. 1570 PRINT"THE LENGTH OF THE INTERIOR ELEMENTS =";ELEM;" INCHES"
  158. 1580 PRINT"  LENGTH OF END ELEMENTS =";ELEQ;" INCHES"
  159. 1590 PRINT"  GROUND PLANE SPACE     =";H;" INCHES"
  160. 1600 PRINT"   ROD DIAMETER          =";D;" INCHES"
  161. 1610 PRINT" END PLATES ";E;" INCHES FROM C/L OF END ROD"
  162. 1620 PRINT"TAP EXTERNAL LINES UP ";AQ;" INCHES FROM SHORTED END "
  163. 1630 PRINT"LINE IMPEDANCES: END ROD ";ZE;" ,OTHER ";ZM;" , EXT. LINES ";R;" OHM"
  164. 1640 PRINT"DIMENSIONS"
  165. 1650 PRINT"EL.No.        END TO C      C TO C       G(K)        Q/COUP
  166. 1660 DOM=E
  167. 1670 GOO=1
  168. 1680 PRINT "0";TAB(41)GOO;TAB(55)AKO
  169. 1690 PRINT "1";TAB(16)E;TAB(41)G(1);TAB(55)AK(1)
  170. 1700 FOR K=1 TO NFM
  171. 1710    L=K+1
  172. 1720   PRINT TAB(28)C(K)
  173. 1730    DOM=DOM+C(K)
  174. 1740   PRINT L;TAB(16)DOM;TAB(41)G(L);TAB(55)AK(L)
  175. 1750 NEXT K
  176. 1760 LQ=N+1
  177. 1770 PRINT LQ;TAB(41)G(LQ)
  178. 1780 DOM=DOM+E
  179. 1790 PRINT TAB(16)DOM
  180. 1800 IF IDAT = 1 THEN GOTO 2180
  181. 1810 REM
  182. 1820 REM
  183. 1830 REM DEFINE FUNCTION
  184. 1840 DEF FNRJ(TA,B,C,D)=(B*C-TA*D)/(C*C+D*D)
  185. 1850 END
  186. 1860 REM SUB CHEB
  187. 1870 REM
  188. 1880 C=2*RIP/17.37
  189. 1890 BETA=LOG((EXP(C)+1)/(EXP(C)-1))
  190. 1900 GAMMA=.5*(EXP(BETA/(2*N))-EXP(-BETA/(2*N)))
  191. 1910 FOR K=1 TO N
  192. 1920     A(K)=SIN(.5*(2*K-1)*PI/N)
  193. 1930     B(K)=GAMMA^2+SIN(K*PI/N)^2
  194. 1940 NEXT K
  195. 1950 G(1)=2*A(1)/GAMMA
  196. 1960 FOR K=2 TO N
  197. 1970     G(K)=4*A(K-1)*A(K)/(B(K-1)*G(K-1))
  198. 1980 NEXT K
  199. 1990 NN=N/2
  200. 2000 NNN=(N+1)/2
  201. 2010 REM IF NNN-NN<0 THEN AG=1 ELSE IF NNN-NN=0 THEN AG1=2 ELSE AG1=3
  202. 2020 ON (2+SGN(NNN-NN)*1) GOTO 2030,2030,2050
  203. 2030 G(N+1)=((EXP(BETA/2)+1)/(EXP(BETA/2)-1))^2
  204. 2040 RETURN
  205. 2050 G(N+1)=1
  206. 2060 RETURN
  207. 2070 REM SUB FOR BUTT
  208. 2080 REM
  209. 2090 REM
  210. 2100 REM
  211. 2110 REM
  212. 2120 POV2=1.57079633#
  213. 2130 FOR K=1 TO N
  214. 2140     G(K)=2*SIN(POV2*(2*K-1)/N)
  215. 2150 NEXT K
  216. 2160 G(N+1)=1
  217. 2170 RETURN
  218. 2180 INPUT" IS HARD COPY REQUIRED  ";HC$
  219. 2190 IF HC$ = "Y" OR HC$ = "y" THEN GOTO 2240
  220. 2200 IF HC$ = "N" OR HC$ = "n" THEN GOTO 150
  221. 2210 PRINT" PLEASE ANSWER Y OR N"
  222. 2220 GOTO 2180
  223. 2230 PRINT;PRINT;PRINT;PRINT;PRINT
  224. 2240 IF RIP > 0 THEN GOTO 2270
  225. 2250 LPRINT"DESIGN DATA FOR ";N;" POLE INTERDIGITAL FILTER. BUTTERWORTH RESPONSE"
  226. 2260 GOTO 2280
  227. 2270 LPRINT"DESIGN DATA FOR ";N;" POLE INTERDIGITAL FILTER. BAND-PASS RIPPLE ";RIP;" DB"
  228. 2280  LPRINT
  229. 2290 LPRINT" CENTER FREQ. ";FZGC;" GHZ"
  230. 2300 LPRINT" CUTOFF FREQ. ";F1;" GHZ  AND ";F2;" GHZ."
  231. 2310 LPRINT"  RIPPLE B.W. ";BWRGC;" GHZ"
  232. 2320 LPRINT"    3DB  B.W. ";BW3GC;" GHZ"
  233. 2330 LPRINT"FRACTIONAL BW ";W
  234. 2340 LPRINT" FILTER  Q    ";QF
  235. 2350 LPRINT"   EST   QU   ";QU
  236. 2360 LPRINT"LOSS BASED ON QU ";BLOSS;" DB"
  237. 2370 LPRINT"DELAY AT BAND CENTER ";DELAY;" NANOSECONDS"
  238. 2380 LPRINT
  239. 2390 FOR JK = 1 TO NFR
  240. 2400 IF JK = 1 THEN LPRINT" FREQUENCY REJECTION INFORMATION "
  241. 2410 LPRINT
  242. 2420 NFN=ABS(2*(FR(JK)-FZGC)/(W*FZGC))
  243. 2430 IF RIP > 0 THEN GOTO 2460
  244. 2440 ALOSS(JK)=10*LOG(1+NFN^(2*N))/LOG(10)
  245. 2450 GOTO 2500
  246. 2460 IF NFN < 1 THEN NFN = 1
  247. 2470 ANG = N*LOG(NFN+SQR(NFN*NFN-1))
  248. 2480 YAK = .5*(EXP(ANG)+EXP(-ANG))
  249. 2490 ALOSS(JK) = 10*LOG(1+(10^(.1*RIP)-1)*YAK*YAK)/LOG(10)
  250. 2500 IF ALOSS(JK) > 65 THEN ALOSS = 65 ELSE ALOSS = ALOSS(JK)
  251. 2510 FR = INT(FR(JK)*10000)/10000:ALOS = INT(ALOSS(JK))
  252. 2520 LPRINT TAB(INT(ALOSS))"*";TAB(66)FR;TAB(73)ALOS
  253. 2530 NEXT JK
  254. 2540 LPRINT
  255. 2550 LPRINT
  256. 2560 LPRINT
  257. 2570 LPRINT"       QUARTER WAVELENGTH    =";QWVL;" INCHES"
  258. 2580 LPRINT"LENGTH OF INTERIOR ELEMENTS  =";ELEM;" INCHES"
  259. 2590 LPRINT"LENGTH  OF  END  ELEMENTS    =";ELEQ;" INCHES"
  260. 2600 LPRINT"       GROUND  PLANE  SPACE  =";H;" INCHES"
  261. 2610 LPRINT"           ROD  DIAMETER     =";D;" INCHES"
  262. 2620 LPRINT"           END  PLATES       =";E;" INCHES FROM C/L OF END ROD"
  263. 2630 LPRINT
  264. 2640 LPRINT"   TAP EXTERNAL LINES UP ";AQ;" INCHES FROM SHORTED END."
  265. 2650 LPRINT
  266. 2660 LPRINT"  LINE IMPEDANCES:--"
  267. 2670 LPRINT"                    END ROD   ";ZE;"  OHMS"
  268. 2680 LPRINT"                    OTHER     ";ZM;"  OHMS"
  269. 2690 LPRINT"                    EXT LINES ";R;"  OHMS"
  270. 2700 LPRINT
  271. 2710 LPRINT"    DIMENSIONS :--"
  272. 2720 LPRINT
  273. 2730 LPRINT"                             CENTER"
  274. 2740 LPRINT"ELEMENT          END TO        TO        COUPLING COEFFICIENTS "
  275. 2750 LPRINT"NUMBER           CENTER      CENTER       G(K)         Q/COUP  "
  276. 2760 DOM = E
  277. 2770 GOO = 1 
  278. 2780 LPRINT" 0";TAB(41)GOO;TAB(55)AKO
  279. 2790 LPRINT" 1";TAB(16)E;TAB(41)G(1);TAB(55)AK(1)
  280. 2800 FOR K = 1 TO NFM
  281. 2810 L = K + 1
  282. 2820 LPRINT TAB(28)C(K)
  283. 2830 DOM = DOM + C(K)
  284. 2840 LPRINT L;TAB(16)DOM;TAB(41)G(L);TAB(55)AK(L)
  285. 2850 NEXT K
  286. 2860 LQ = N + 1
  287. 2870 LPRINT LQ;TAB(41)G(LQ)
  288. 2880 DOM = DOM + E
  289. 2890 LPRINT TAB(16)DOM
  290. 2900 RUN "MENU"
  291.